﻿using DataType.CustomEnumType;
using System.Collections.Generic;

namespace OprsSimulator.OprAttributes
{ 
    public interface IMoveAttris
    {
        int BasicSpeed { get; }
        MoveStateType MoveState { get; set; }
        int CurHex { get; set; }
        float CurPos { get; set; }  // 当前格到下一格的百分比进度
        int Speed { get; set; }
        int MoveToStopRemainTime { get; set; }  // 机动转停止剩余时间
        bool CanToMove { get; set; }  // 是否可机动标志位.只在停止转换过程中用来判断是否可以继续机动.强制停止不能继续机动,正常停止可以继续机动，庙算中为Int类型
        bool FlagForceStop { get; set; }  // 是否被强制停止机动，庙算中为Int类型
        bool Stop { get; set; }  // 是否静止，庙算中为Int类型
        List<int> MovePath { get; set; }  // 计划机动路径, 首个元素代表下一目标格，庙算中为List<int>类型
        int Tire { get; set; }  // 疲劳等级 0-不疲劳 1-一级疲劳 2-二级疲劳
        int TireAccumulateTime { get; set; }  // 疲劳累积时间
        bool OnBoard { get; set; }  // 是否在车上，庙算中为Int类型
        int Car { get; set; }  // 所属车辆ID
        int Launcher { get; set; }  // 算子下车/发射后,记录所属发射器
        int GetOnRemainTime { get; set; }  // 上车剩余时间
        List<int> GetOnPartnerId { get; set; }  // 车辆算子ID(本算子为上车算子) 或 待上车算子(本算子为车辆算子)
        int GetOffRemainTime { get; set; }  // 下车剩余时间
        List<int> GetOffPartnerId { get; set; }  // 车辆算子ID(本算子为下车算子) 或 待下车算子(本算子为车辆算子)
        int ChangeStateRemainTime { get; set; }  // 切换状态剩余时间
        MoveStateType TargetState { get; set; }  // 状态转换过程中记录目标状态
    }
}
